#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll a,b;
ll dp[11][15][11];

inline void initDp(){
    memset(dp,0,sizeof(dp));
    for(int i=0;i<10;i++){
        for(int j=0;j<10;j++){
            if(i==j){
                dp[i][1][j] = 1;
            }else{
                dp[i][1][j] = 0;
            }
        }
    }
    for(int k=2;k<=13;k++){
        for(int i=0;i<10;i++){
            for(int j=0;j<10;j++){
                for(int num=0;num<10;num++){
                    dp[i][k][j] += dp[num][k-1][j];
                }
                if(i==j){
                    dp[i][k][j] += (ll)pow(10,k-1);
                }
            }
        }
    }
}

inline vector<ll> solve(ll x){
    vector<ll> res = vector<ll>(10,0);
    int bi[15];
    int p=0;
    while(x){
        bi[++p] = x%10;
        x /= 10;
    }
    // 0000-9999
    for(int i=1;i<=p-1;i++){
        for(int j=1;j<10;j++){
            for(int k=0;k<10;k++){
                res[k] += dp[j][i][k];
            }
        }
    }
    // 10000-29999
    // cout<<"---"<<p<<endl;
    for(int i=1;i<bi[p];i++){
        for(int k=0;k<10;k++){
            res[k] += dp[i][p][k];
        }
    }
    for(int i=p-1;i>0;--i){
        int cur = bi[i];
        for(int j=0;j<cur;j++){
            for(int k=0;k<10;k++){
                res[k] += dp[j][i][k];
            }
        }
        if(cur>0){
	        for(int j=i+1;j<=p;j++){
	            int head = bi[j];
	            res[head] += cur*(ll)pow(10,i-1);
	        }
	    }
    }
    return res;
}

int main(){
    cin>>a>>b;
    initDp();
    auto res1 = solve(b+1);
    // cout<<"+++++++\n";
    auto res2 = solve(a);
    for(int i=0;i<=9;i++){
        cout<<res1[i]-res2[i]<<" ";
    }
    cout<<endl;
    return 0;
}
